package io.gitee.gemini.utis;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class CollectionUtil {


    private CollectionUtil() {
    }


    /**
     * 从两个数组中查找相同元素
     *
     * @param t1  数组一
     * @param t2  数组二
     * @param <T> 类型。
     * @return 相同元素集合
     */
    public static <T> List<T> sameItem(T[] t1, T[] t2) {
        return sameItem(Arrays.asList(t1), Arrays.asList(t2));
    }

    /**
     * 从两个链表中查找相同元素
     *
     * @param list1 链表一
     * @param list2 链表二
     * @param <T>   类型。
     * @return 相同元素集合
     */
    public static <T> List<T> sameItem(List<T> list1, List<T> list2) {
        List<T> result = new ArrayList<>();
        for (T t : list1) {
            if (list2.contains(t)) {
                result.add(t);
            }
        }
        return result;
    }

    /**
     * 任一匹配集合中某对象
     *
     * @param items  集合
     * @param target 对比对象
     * @param <T>    集合类型
     * @return 比较结果
     */
    public static <T> boolean anyMatch(Collection<T> items, T target) {
        for (T item : items) {
            if (target.equals(item)) {
                return true;
            }
        }
        return false;
    }


    /**
     * 集合是否为空
     *
     * @param items 需要判定的集合
     * @param <T>   集合元素类型
     * @return 是否为空
     */
    public static <T> boolean isEmpty(Collection<T> items) {
        return items == null || items.size() == 0;
    }


    public static <T> boolean isNotEmpty(Collection<T> items) {
        return !isEmpty(items);
    }

}

